package com.zjsru.plan2023.oneday.oneDay202303;

import java.util.Arrays;

/**
 * @Author: CookLee
 * @Date: 2023/3/1
 * 矩阵中的局部最大值：
 * 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵  maxLocal ，并满足：
 * maxLocal[i][j] 等于 grid 中以 i + 1 行和 j + 1 列为中心的 3 x 3 矩阵中的 最大值 。
 * 换句话说，我们希望找出 grid 中每个 3 x 3 矩阵中的最大值。
 *
 * 输入：grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]
 * 输出：[[9,9],[8,6]]
 * 解释：原矩阵和生成的矩阵如上图所示。
 * 注意，生成的矩阵中，每个值都对应 grid 中一个相接的 3 x 3 矩阵的最大值。
 *
 * 输入：grid = [[1,1,1,1,1],[1,1,1,1,1],[1,1,2,1,1],[1,1,1,1,1],[1,1,1,1,1]]
 * 输出：[[2,2,2],[2,2,2],[2,2,2]]
 * 解释：注意，2 包含在 grid 中每个 3 x 3 的矩阵中。
 */
public class LargestLocal {
    public int[][] largestLocal(int[][] grid) {
        int len = grid.length;
        //最低是3*3的矩阵，对应生成的矩阵-2即可
        int[][] ans = new int[len - 2][len -2];
        for (int i = 0; i < len - 2; i++) {
            for (int j = 0; j < len - 2; j++) {
                for (int x = i; x < i + 3; x++) {
                    for (int y = j; y < j + 3; y++) {
                        ans[i][j]  = Math.max(ans[i][j], grid[x][y]);
                    }
                }
            }
        }
        return ans;
        
    }
    
    public static void main(String[] args) {
        LargestLocal largestLocal = new LargestLocal();
        int[][] grid = new int[][] {{9, 9, 8, 1}, {5, 6, 2, 6}, {8, 2, 6, 4}, {6, 2, 2, 2}};
        System.out.println(Arrays.deepToString(largestLocal.largestLocal(grid)));
    }
}
